从文件的单行读取输入字符
Reading input chars from single line of a file
所以我的任务是从文件中读取一行例:
4. 7 3-+ 2 -3+
并将其一一输入到字符串变量中。
一个问题是数字和符号之间有0个或多个空格,但一个数字和另一个数字之间至少有1个空格。那么如何区分每个数字/符号呢?
我建议你通过getline()读取整行,然后逐字符解析字符串,也许可以构建另一个字符串。
cin.getline( myString );
for ( int i = 0; i < myString.size(); i++ ) {
if ( myString[i] != ' ' ) {
if ( myString[i] >= '0' && myString[i] <= '9' {
// do something with numbers;
} else {
// do something with characters.
}
}
}
另一种选择是逐个字符阅读。这些解决方案仅适用于个位数。对于多个数字,您将不得不再次逐个字符构建数字。
char ch;
cin >> std::noskipws; // needed to recognize the end of line character.
while ( cin >> ch && ch != 'n' ) {
if ( ch != ' ' ) {
if ( ch >= '0' && ch <= '9' {
// do something with numbers;
} else {
// do something with characters.
}
}
}
cin >> std::skipws;
在C++中,您可以使用 getline()
将整行读取为字符串。现在字符串支持find_first_of()
和find_first_not_of()
,这允许有效地读取直到空格,然后跳过它。
未测试:
string delims = " t"
getline(file, line);
int tokenStart, tokenEnd = 0;
string token;
tokenStart = line.find_first_not_of(delims, tokenEnd);
tokenEnd = line.find_first_of(delims, tokenStart);
// substr expects length, not end of substring
token = line.substr(tokenStart, tokenEnd-tokenStart);
相关文章:
- 无法在 C++ 中输入字符数组
- 当我输入字符类型的数字时,为什么我无法获得整数?
- 在不使用字符串库的情况下输入字符*
- 为什么当我输入字符时,这个特定的 cin.get() 语句在C++中不起作用?
- C++中输入字符数组的特定验证
- 如果用户在 int 中输入字符,如何使用输入
- 当我们在以下程序(C )中输入字符时,该如何解决
- 如何在结构中输入字符到向量
- 用户输入逻辑运算符符号或数字,如果输入字符或字符串则无效
- 输入字符时忽略回车键
- 在 switch 语句中输入字符以进行C++时用户输入错误
- 使用Back_inserter从任何位置的输入字符中使用Back_inserter进行过滤数组字符串
- 如何在应该显示的printf之前输入字符
- C++ 输入字符而不是 int 会导致无限循环.如何检查错误的输入
- 为什么"keep_window_open()"不等待输入字符?
- 为什么我的程序在输入字符时有一个无限循环
- 当提示输入整数值时输入字符时,为什么程序会中断
- 关闭回显后如何再次回显输入字符
- 忽略输入字符
- 从文件的单行读取输入字符