Дана строка, в которой записаны две последовательности символов через пробел. Нужно разделить их на 2 отдельные строки, пробел удалить.
Пример ввода:
string1 = sdkmaskmdawekqwemkqwekmqwekm bqmekwmqwekmqewkqwemkkmwqe
Пример вывода
string1 = sdkmaskmdawekqwemkqwekmqwekm
string2 = bqmekwmqwekmqewkqwemkkmwqe
Непонятно, через string или C-строки.
Итак, если известно, что пробел один...
Решение через строки C++.
string str = "sdkmaskmdawekqwemkqwekmqwekm bqmekwmqwekmqewkqwemkkmwqe";
auto pos = str.find(" ");
if (pos != string::npos)
{
string s1 = str.substr(0,pos);
string s2 = str.substr(pos+1);
cout << s1 << endl << s2 << endl;
}
Со строками C:
char str[] = "sdkmaskmdawekqwemkqwekmqwekm bqmekwmqwekmqewkqwemkkmwqe";
char * c = strchr(str,' ');
if (c != 0)
{
char s1[100], s2[100];
strcpy(s1,str);
s1[c-str] = 0;
strcpy(s2,c+1);
cout << s1 << endl << s2 << endl;
}
Естественно, это лишь одни из множества вариантов..
Если пробел один (и для результатов (sttring2 и string3) выделено достаточно памяти), то
sscanf(string1, "%s %s", string2, string3);
Если же требуется разделить строку string1 по первому пробелу и учесть вариант, когда нет ни одного пробела, то можно написать что-то в таком духе
....
char *p = strchr(string1, ' ');
if (p) {
strncpy(string2, string1, p - string1);
string2[p - string1] = 0;
strcpy(string3, p + 1);
} else {
string3[0] = 0;
strcpy(string2, string1);
}
еще можно вот так:
#include <string>
#include <iostream>
#include <sstream>
using namespace std;
int main(){
string s="sdkmaskmdawekqwemkqwekmqwekm bqmekwmqwekmqewkqwemkkmwqe";
stringstream ss(s);
string s1,s2;
getline(ss,s1,' ');
getline(ss,s2,' ');
cout<<s1<<"\n"<<s2;
}
можно написать это функцией что бы делила кучу слов сразу, передать надо саму строку и символ дележки:
#include <string>
#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
vector<string> split(string s,char delim){
string temp="";
stringstream ss(s);
vector<string> vec;
while(getline(ss,temp,delim)){
if(temp.length()){
vec.push_back(temp);
}
}
return vec;
}
int main(){
string s="sdkmaskmdawekqwemkqwekmqwekm bqmekwmqwekmqewkqwemkkmwqe adadad, 123123";
vector<string> ans;
ans=split(s, ' ');
for(const auto& a:ans)
cout<<a<<"\n";
}
std::string s1 = "sdkmaskmdawekqwemkqwekmqwekm bqmekwmqwekmqewkqwemkkmwqe", s2, s3;
std::stringstream(s1) >> s2 >> s3;
Сборка персонального компьютера от Artline: умный выбор для современных пользователей