如何在C ++中拆分字符串

时间:2013-10-30 04:50:59

标签: c++ string

我有非常基本的C代码,我有一个简单的问题。 我搜索谷歌我的问题,但我找不到任何帮助我的东西。所以,我的问题是我需要拆分一个字符串并输出两个字符串作为结果。我知道strcpy,但它不适用于我。

假设我们有一个字符串:

stringOne("http://google.com/logo.jpg C:\windows\user\Desktop\logo.jpg");

我想将“http://google.com/logo.jpg”复制到另一个字符串中,

stringTow("http://google.com/logo.jpg");

如果我cout << stringTwo << endl;

它会显示http://google.com/logo.jpg

"C:\windows\user\Desktop\logo.jpg"成另一个字符串,

stringThree("C:\windows\user\Desktop\logo.jpg");

抱歉我的英语不好:)

2 个答案:

答案 0 :(得分:0)

假设您正在讨论C ++的std::string,您可以通过多种方式执行此操作,例如,您可以使用string.find和string.assign。

有关其他方法,请查看std::string member functions

#include <string>
#include <iostream>

int main(int /*argc*/, const char** /*argv*/)
{
    std::string stringOne = "http://google.com/logo.jpg C:\\windows\\user\\Desktop\\logo.jpg";
    std::string stringTwo = "", stringThree = "";

    size_t spacePos = stringOne.find(' ');
    if (spacePos != std::string::npos) {
        // copy 0-spacePos, i.e. all the chars before the space.
        stringTwo.assign(stringOne, 0, spacePos);
        // copy everything after the space.
        stringThree.assign(stringOne, spacePos + 1, std::string::npos);
    }

    std::cout << "s1 = \"" << stringOne << "\"" << std::endl;
    std::cout << "s2 = \"" << stringTwo << "\"" << std::endl;
    std::cout << "s3 = \"" << stringThree << "\"" << std::endl;
}

现场演示:http://ideone.com/t2MEiD

答案 1 :(得分:0)

使用这种方式,

   char str[] = "http://google.com/logo.jpg C:\windows\\user\Desktop\logo.jpg";
   char *string1;   
   char *string2;
   string1 = strtok(str, " ");
   printf("%s\n",string1);

   string2 = strtok(NULL, " ");
   printf("%s\n",string2);