C++如何用分割并存储字符串

C++如何用strtok函数分割一个字符串并把子串存储到string数据类型变量中?如果用该函数难以实现,是否还有其他函数可实现该功能?

#include <iostream>
using namespace std;

int main(int argc, char *argv[])
{
    char *p;
    string s = "192.168.0.1";
    string str[10];
    int count = 0;
    p = strtok((char *)s.data(), "."); 
    if(p) {
        str[count].append(p);
        count++;
        while((p = strtok(NULL, "."))) {
            str[count].append(p);
            count++;
        }
    }
    for(int i=0; i<count; i++) {
        cout << str[i] << endl;
    }
    return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 可以看下cpp参考手册中的 c++-字符串
  • 除此之外, 这篇博客: c++入门笔记自己整理+代码分析附目录(上)中的 字符串 string 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    instring H = “Hello”;
    instring I = “i’m Exp”;
    cout<< H <<endl;
    cout<< I <<endl;
    此时会输出
    Hello
    i’m Exp

    但当我们去掉第一行最后的<<endl,此时会变成
    Helloi’m Exp

    此时可以在第一行的字符串中增加换行符\n来达到同样的效果
    instring H = “Hello\n”;
    cout<< H;
    cout<< I <<endl;
    此时会输出
    Hello
    i’m Exp

    小结:字符串类型在输出时换行符\n不能直接放在后面,而应该放在字符串的后面,即将instring H = “Hello”;修改为instring H = “Hello\n”;


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^