【发布时间】:2016-01-03 20:21:21
【问题描述】:
我有一个 std::string,我想对其进行迭代并基本上变成一个 int 值流,代表每个字符的 ascii 值。
我的问题是转义字符。比如“\n”。
std::string str = "hello\nhello";
for (char c : str) {
int asciiVal = static_cast<int>(c);
// now do something with val. but what about the escape sequence?
}
问题在于这段代码只是将“\n”视为两个单独的字符。
更新:
这是一个真正的问题。 是的,它不会发生在普通的 C++ 代码中,但会发生在包含 C/C++ 摘录的 .lex 文件中。 这是真正的代码和输出:
代码:.lex 文件
char *c = yytext;
c[yyleng-1] = '\0';
c++;
std::string str = c;
cout << "MY STRING: '" << str << "'" << endl;
for (char c : str) {
int val = static_cast<int>(c);
std::cout << to_string(val) << std::endl;
}
输出:
MY STRING: '\n'
92
110
【问题讨论】:
-
不清楚为什么需要它,但只需转义转义字符:
'\\'。 -
我需要它以便与采用 ascii 值的外部函数集成。所以例如我需要提供 '\n' 的 ascii 值,这样这个函数才能正常工作。
-
你为什么要标记一个 C++ 问题c?
-
“问题是这段代码只是将“\n”视为两个单独的字符。”不,它没有。 -1 因为这个问题基本上是个大谎言:)
-
@LightnessRacesinOrbit 不是谎言。检查更新。
标签: c++ string flex-lexer