相关疑难解决方法(0)

将std :: string拆分为vector <string>的正确方法

可能重复:
如何拆分字符串?

将字符串拆分为字符串向量的正确方法是什么.分隔符是空格或逗号.

c++ string

61
推荐指数
7
解决办法
16万
查看次数

计算文件中单词频率的优雅方法

计算文件中每个"英语"单词频率的优雅有效方法是什么?

c++ file-io

11
推荐指数
1
解决办法
3万
查看次数

c ++读取csv文件

我想用c ++读取csv文件,所以这是我的代码

 int main(){
 ifstream classFile("class.csv");
 vector<string> classData;

 while (getline(classFile, line,',')) // there is input overload classfile
        {
            classData.push_back(line);  

        }
}
Run Code Online (Sandbox Code Playgroud)

这是我的问题:我的问题是当它读取每行的最后一列时(因为它没有用逗号分隔),它读取最后一列数据和下一行数据的第一列,例如,如果我的数据是

className,classLocation,c ++教授,图书馆,约翰

然后它读起来像className/classLocation/Professor c ++/Library/John

无论如何,我可以将我的最后一列与下一行中的第一列分开吗?谢谢,抱歉这令人困惑

c++ csv

5
推荐指数
2
解决办法
4万
查看次数

getline 函数的多个分隔符,C++

我想逐字阅读文本,以简单的方式避免任何非字母数字字符。在从带有空格和 '\n' 的文本“进化”之后,我需要解决这个问题,以防还有 ',', '.' 例如。第一种情况是通过使用带有分隔符“ ”的 getline 来解决的。我想知道是否有一种方法可以使用getline多个分隔符,甚至某种正则表达式(例如 '.'|' '|','|'\n')。

据我所知,它的getline工作方式是从输入流中读取字符,直到delimiter到达'\n' 或字符为止。我的第一个猜测是为它提供多个分隔符非常简单,但我发现事实并非如此。

编辑:作为澄清。任何 C 风格(例如 strtok,在我看来非常丑陋)或算法类型的解决方案都不是我想要的。想出一个简单的算法来解决这个问题并实现它是相当容易的。我正在寻找一个更优雅的解决方案,或者至少解释为什么我们不能用getline函数来处理它,因为除非我完全误解了,否则应该能够以某种方式接受多个分隔符。

c++ io

4
推荐指数
1
解决办法
2778
查看次数

C++使用多个分隔符分解字符串

可能重复:
在C++中通过多个分隔符将字符串拆分为单词

我目前正在尝试读取一个文件,其中每行都有一个选项卡和空格的变体,用于分隔需要插入二叉树的关键属性.

我的问题是:如何仅使用STL使用多个分隔符拆分一行?我一直试图在这一天的大部分时间都不知所措.

任何建议将非常感谢.

c++

2
推荐指数
1
解决办法
6284
查看次数

使用C ++将字符串拆分为键/值对

我有一个像这样的字符串:

"CA: ABCD\nCB: ABFG\nCC: AFBV\nCD: 4567"
Run Code Online (Sandbox Code Playgroud)

现在": "从值中拆分键,同时\n将对分离。我想将键值对添加到C ++中的映射中。

有没有考虑优化的有效方法?

c++ dictionary

2
推荐指数
1
解决办法
9235
查看次数

在C ++中使用多个定界符分割字符串

因此,我必须将短语“ Hello,每个人!这是:COSC-1436,SP18”拆分为单独的标记,删除所有标点符号减去破折号。因此输出应为:

你好

大家

这个

COSC-1436

SP18

然后,我必须加密覆盖的每个令牌。我只是在使用多个定界符时遇到麻烦。这是我目前所拥有的。

功能原型: void tokenize(const string&, const string&, vector<string>&);

函数调用: tokenize(code, " .,:;!?", tokens);

功能定义:

void tokenize(const string& str, const string& delim, vector<string>& tokens)
{
    int tokenStart = 0;

    int delimPos = str.find_first_of(delim);

    while(delimPos != string::npos)
    {
        string tok = str.substr(tokenStart, delimPos - tokenStart);

        tokens.push_back(tok);

        delimPos++;

        tokenStart = delimPos;

        delimPos = str.find_first_of(delim, delimPos);

        if(delimPos == string::npos)
        {
            string tok = str.substr(tokenStart, delimPos - tokenStart);

            tokens.push_back(tok);
        }   
    }
}
Run Code Online (Sandbox Code Playgroud)

唯一的问题是,在程序遇到标点符号的地方,现在有标记作为空白。有什么建议么?

c++ string split token delimiter

1
推荐指数
2
解决办法
2693
查看次数

标签 统计

c++ ×7

string ×2

csv ×1

delimiter ×1

dictionary ×1

file-io ×1

io ×1

split ×1

token ×1