我有非常基本的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");
抱歉我的英语不好:)
答案 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;
}
答案 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);