-2

我有非常基本的 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");

对不起我的英语不好:)

4

2 回答 2

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

于 2013-10-30T05:30:27.093 回答
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);
于 2013-10-30T05:35:13.823 回答