c++读带空格的字符串
C++ read string with spaces
我有一个这样的文件:
59 137 New York
137 362 Syracuse
216 131 New Jersey
...
..
.
,我想把它读到一个结构体:X - Y -城市名称
char city[100];
int x , y;
f.open("map.txt");
f >> x >> y >> city;
while (!f.fail()) {
f >> x >> y >> city;
}
f.close();
问题是,这个城市只能读到下一个空格,所以New York只能读到New。我该如何以一种简单而聪明的方式阅读一行的其余部分呢?
文件的格式似乎暗示城市名称以行结尾,而不是空格结尾。
您可以使用getline
char city[100];
int x , y;
f.open("map.txt");
while ( f ) {
f >> x >> y;
f.getline(city, 100);
}
f.close();
你可以这样做:
f.open("map.txt");
string city;
int x , y;
f >> x >> y;
getline(f,city);
while (!f.fail()) {
f >> x >> y;
getline(f,city);
}
f.close();
使用getline(f, city)表示城市。有f>> x>> y;getline (f,市);
该代码读取空格并正确处理文件结束。我认为其他答案都不会这样做
while ((f >> x >> y).getline(city, 100))
{
}
有关如何正确测试文件结束的更多信息,请参阅此。
当然你应该像其他人说的那样使用std::string
来做事情。
相关文章:
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 移除前面有空格的前2个字符串
- 用于存储由空格分隔的字符串的 C++/C 数据结构
- 在字符串中插入空格
- C ++中的StringStream有助于使用向量从字符串中提取逗号分隔的整数,而不是空格分隔的整数,为什么?
- 使用另一个字符串从字符串中删除空格
- 我还可以添加什么来按空格或空格正确拆分C++字符串?
- C++ "noskipws"没有按预期工作,如何正确允许字符串中的空格?
- 在 c++ 中逐行阅读字符串,不要以空格停止
- std::regex:匹配由数字和空格组成的字符串,并提取数字.如何?
- 如何存储包含多个空格的字符串 c++
- 在特定位置为字符串添加空格
- 有没有办法在 c++ 中获取带有空格的完整字符串?
- C++完全复制要字符串的字符列表,而不会忽略多个空格
- Winsock2:当我尝试发送带有空格的字符串时,该函数在遇到空格时似乎停止发送
- 从没有空格的字符串中提取整数
- 用于拆分空格字符串的程序不起作用
- 解析C++中的完整(从头到尾)字符串,包括所有空格
- 反转字符串中单词的位置,而不更改 O(1) 空格限制中特殊字符的顺序
- 当我的 if 语句在字符串中找到空格时,在无限循环中切换