当我为第一个字符串(C++)输入空格时,如何删除输出中的双引号和逗号
How to remove double quotation marks and comma in the output when I input space for the first string (C++)
我正试图编写一个函数来拆分字符串并将其像子字符串一样返回。代码已完成。我刚刚遇到一个问题:当我为第一个字符串输入空格时,如何删除输出中的双引号和逗号?感谢您的帮助!非常感谢。
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include <ctype.h>
using namespace std;
vector<string> split(string targer, string delimiter);
int main()
{
string s, delimiter;
vector<string> tokens;
cout << "Enter string to split:" << endl;
getline (cin,s);
cout << "Enter delimiter string:" << endl;
getline (cin,delimiter);
tokens = split(s, delimiter);
cout << "The substrings are: ";
for(int i = 0; i < tokens.size() - 1; i++)
{
if (tokens[i].length() != 0){
cout << """ << tokens[i] << """ << "," << " ";
}
}
if (tokens.size() != 0)
{
cout << """ << tokens[tokens.size() - 1] << """;
}
cout<<endl;
return 0;
}
vector<string> split(string target, string delimiter){
stringstream ss(target);
string item;
vector<string> tokens;
while (getline(ss, item, delimiter.at(0))) {
tokens.push_back(item);
}
return tokens;
}
您的问题不是"当我为第一个字符串输入空格时,如何在输出中删除双引号和逗号"。
您的问题是正确地拆分字符串,以便将包含空格的带引号字符串正确地提取为单个字符串。
I/O库提供的解析输入直到下一个定界字符的简单方法不足以单独处理字符串的拆分。他们对引号一无所知。你必须自己做这项工作:
-
使用以下逻辑,一次扫描一个输入字符串。
-
如果当前字符是分隔字符,请继续到下一个字符。
-
如果当前字符是引号,则继续扫描,直到看到下一个引号字符,然后将引号之间的所有内容提取为一个单词。
-
否则,继续扫描,直到看到下一个分隔字符,然后提取所有内容,直到该点成为一个单词。
这是典型分裂算法的基本高级概述。你最终会得到单独提取的单词,并将引用的内容作为一个单词。您可以采用这个高级概述,并将其重写为较低级别、更详细的算法,然后向您的橡皮鸭解释它。在你的橡皮鸭同意你的详细算法可以工作后,你可以直接将其翻译成代码。
一旦你正确地实现了这一点,你就可以进一步完善它,允许引号字符本身包含在一个被引用的单词中。通常,这是通过在一行中使用两个连续的引号或反斜杠"转义"字符来完成的。
相关文章:
- 从排序数组中删除重复项,具有不同代码方式的相同解决方案具有不同的输出
- 从文件中读取多行.txt字符串删除空格并创建新文件进行输出
- 在输出之前删除匹配字符
- 提升进程间共享内存删除、权限和输出文件
- 如何从C ++的输出中删除垃圾数据(垃圾数据)
- 使用数组和布尔值在输出未知时从输出中删除逗号
- 从 c++ 输出中删除逗号
- 返回容器时删除输出参数
- 如何从输出中删除这些额外的箭头
- 我写了一个函数来删除循环链接列表中的第 1 个节点,但输出显示无限次"55 44 33 22 11 99",那么我该如何解决呢?
- 如何删除模板类的输出操作程序重载的错误
- 删除"超出矢量误差范围"的打印语句后输出不同的根本原因
- 如何删除Bitblt的输出?(MFC)
- 在队列中,插入和删除后,被删除的元素也会出现在输出中.为什么
- C++输出流删除存储的数据
- 从数组中删除未使用的内存,以免输出随机数
- 如何在先前读取行中找到一些单词并在C 中的输出读/写字符串中删除它
- 使用命令行标志删除Google测试锅炉框架输出
- 无法删除输出后的随机数
- 当我为第一个字符串(C++)输入空格时,如何删除输出中的双引号和逗号