c++删除空格
C++ remove whitespace
我有这段代码来删除std::字符串中的空白,并删除空格后的所有字符。如果我有abc def它只返回abc。我怎么让它从"abcdefghi"变成"abcdefghi"?
#include<iostream>
#include<algorithm>
#include<string>
int main(int argc, char* argv[]) {
std::string input, output;
std::getline(std::cin, input);
for(int i = 0; i < input.length(); i++) {
if(input[i] == ' ') {
continue;
} else {
output += input[i];
}
}
std::cout << output;
std::cin.ignore();
}
你的实际问题是别人提到的关于cin >>
但是您可以使用下面的代码从字符串中删除空白:
str.erase(remove(str.begin(),str.end(),' '),str.end());
问题是cin >> input
只读取到第一个空格。使用getline()
代替。(谢谢,@BenjaminLindley !)
由于>>
操作符无论如何都会跳过空白,因此您可以执行以下操作:
while (std::cin>>input)
std::cout << input;
但是,这将复制整个文件(删除空白),而不仅仅是一行。
我用来删除字符的函数叫做"conv":
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
string conv(string first, char chr)
{
string ret,s="x";
for (int i=0;i<first.length();i++)
{
if (first[i]!=chr)
s=s+first[i];
}
first=s;
first.erase(0,1);
ret=first;
return ret;
}
int main()
{
string two,casper="testestestest";
const char x='t';
cout<<conv(casper,x);
system("PAUSE");
return 0;
}
您需要将const char x
更改为' '
(空白,空白)才能完成任务。
ifstream ifs(filename);
string str, output;
vector<string> map;
while (getline(ifs, str, ' ')) {
map.push_back(str);
}
for(int i=0; i < map.size();i++){
string dataString = map[i];
for(int j=0; j < dataString.length(); j++){
if(isspace(dataString[j])){
continue;
}
else{
output +=dataString[j];
}
}
}
相关文章:
- 使用另一个字符串从字符串中删除空格
- 如何删除已输入的书以及如何使标题,语言和名称在上面放置空格不会出错?
- 如何插入 4 个空格宽的制表符并将它们删除两个空格?
- 可视代码 删除函数括号内的空格
- 用于删除句点和空格的函数
- Emacs c++选项卡写入空格删除
- 如何删除基于空格的字符串
- 从字符数组中删除双空格
- 循环以从字符数组中删除过多的空格 (C++)
- 从文本文件中读取数据并删除所有换行符空格,并在 C++ 控制台中显示
- 从文件中读取多行.txt字符串删除空格并创建新文件进行输出
- 使用正则表达式删除前导/尾随空格,引号除外
- 从字符串中删除空格未生效
- 为什么在写入文件时删除空格无法读取文件
- 解锈化代码格式化程序删除C++单行中的空格
- c++ 如何删除特定字符串中的空格
- 删除空格后如何将其插入字符串中
- 如何删除字符串中的所有空格并将数据存储在两者之间
- 如何修改数组,从中删除空格,然后将其存储在新数组中
- 如何修复我的代码以删除字符串中的空格