c++ - 更有效的删除空格的方法

标签 c++ arrays char istream removing-whitespace

我正在尝试删除空格并存储空格后面的字符。

这是我正在读取的文件:

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::skipwsstd::noskipws。默认情况下启用跳过空格。不过,它仅适用于[正确实现的] 输入运算符 (>>>)。

要跳过未格式化输入前的空格,您可以使用 std::ws,例如:

(std::cin >> std::ws).get(c);

关于c++ - 更有效的删除空格的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27462162/

相关文章:

c++ - 请帮助 : Legacy database programming in Visual C++ with ADODB

java - 对文件中的多个数组进行排序。整理各州人口

c++ - 使用 isdigit 和 isalpha 将 char 数组设置为彼此相等

带有电子邮件地址和密码的 Javascript 数组

c - 为 char* 分配内存时出现奇怪的字符

string - Delphi中带有数值的$是什么意思

c++ - 传递参数并将其转换为十六进制时出错

c++ - OpenMP 不支持循环中断

c++ - 在 C++ 中解码 json

c - 多个 char* 比较的段错误