相关疑难解决方法(0)

如何迭代字符串的单词?

我正在尝试迭代字符串的单词.

可以假设该字符串由用空格分隔的单词组成.

请注意,我对C字符串函数或那种字符操作/访问不感兴趣.另外,请在答案中优先考虑优雅而不是效率.

我现在最好的解决方案是:

#include <iostream>
#include <sstream>
#include <string>

using namespace std;

int main()
{
    string s = "Somewhere down the road";
    istringstream iss(s);

    do
    {
        string subs;
        iss >> subs;
        cout << "Substring: " << subs << endl;
    } while (iss);
}
Run Code Online (Sandbox Code Playgroud)

有没有更优雅的方式来做到这一点?

c++ string split

2895
推荐指数
43
解决办法
214万
查看次数

如何将字符串的一部分转换为整数?

我知道如何将完整的字符串转换为整数(使用std::stoi)。但是你能指导我如何从字符串中提取整数吗?例如,我想15从 string 中提取整数a15a

string x="a15a";
int a = std::stoi(x);
Run Code Online (Sandbox Code Playgroud)

如果整数位于字符串的开头,则上述方法可以正常工作。例如,如果 的值为string x"15a"则将其转换为整数15。但如果整数出现在字符串中间的某个位置,它就不起作用。如何从字符串之间提取整数。谢谢。

c++ string

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

是否有一个c ++库实现了一种流式的tokenizer?

这个界面后面的东西:

class StreamTokenizer
{
public:
    StreamTokenizer(const std::string delimiter);
    std::list<std::string> add_data(const std::string);
    std::string get_left_over();
};
StreamTokenizer d(" ");
std::list<std::string> tokens;
tokens.append(d.add_data("tok"));
tokens.append(d.add_data("1 t"));
tokens.append(d.add_data("ok2 tok3"));
tokens.push_back(d.get_left_over());
// tokens = {tok1, tok2, tok3}
// d = {}
Run Code Online (Sandbox Code Playgroud)

它以块的形式接收数据,它应该返回它到目前为止找到的所有标记,它应该能够将剩余部分连接到下一个块,并且它不应该保存已经被标记化的数据.

请不要建议使用stringstream,除非你可以展示如何从中删除已经标记化的数据(我的流几乎是无限的)

c++ tokenize

0
推荐指数
1
解决办法
138
查看次数

标签 统计

c++ ×3

string ×2

split ×1

tokenize ×1