我正在尝试删除空格并存储空格后面的字符。
这是我正在读取的文件:
Map: Out of planet
Player: Max
这是我的代码
istreams.get(characters, 50, ':');
istreams.get(c);
istreams.getline(kill.killMap, 35);
if(kill.killMap[0] = '\0)
{
cout << "Error;
break;
}
istreams >> ws;
istreams.get(characters, 50, ':');
istreams.get(c);
istreams.getline(kill.player, 35);
if(kill.player[0] = '\0)
{
cout << "Error;
break;
}
尽管 ws
函数从流中删除了空格,但我认为它对 char
数组的作用不同。如果有人能告诉我一种让 ws
工作的方法,或者只是一种删除空格的有效方法,我将不胜感激
这是我得到的:
cout << kill.killMap << endl;
Out of planet //THERE IS WHITESPACE
cout << kill.player << endl;
Max //THERE IS WHITESPACE
我真正想要的是:
cout << kill.killMap << endl;
Out of planet // NOTICE THERE IS NO WHITESPACE
cout << kill.player << endl;
Max // NOTICE THERE IS NO WHITESPACE
有没有一种方法可以不使用 C++ 字符串
或 Vectors
来做到这一点。我打算使用 C 样式字符串
最佳答案
操纵器 std::ws
立即消耗任何前导空格。如果您想要启用/禁用自动跳过格式化 输入的空白,您可以使用std::skipws
或std::noskipws
。默认情况下启用跳过空格。不过,它仅适用于[正确实现的] 输入运算符 (>>>
)。
要跳过未格式化输入前的空格,您可以使用 std::ws
,例如:
(std::cin >> std::ws).get(c);
关于c++ - 更有效的删除空格的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27462162/