C++ разбить строку на 2 подстроки
Доброго времени суток. . В задании необходимо разбить исходную строку на две подстроки, при этом первая длиной k символов (если на k-ю позицию попадает слово, то его следует отнести ко второй строке) .
Вот, что вышло у меня:
[CPP]#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <string.h>
using namespace std;
int main()
{
setlocale(LC_ALL,"rus");
char string[]="\0";
char substring[2][20]={NULL};
int k=0, s;
//äåëèì ñòðîêó íà 2 ïîäñòðîêè
for(int i=0; i<=1; i++)
{
substring=string[k];
if(string[k+1]==' ' || string[k+1]=='\0')
{
s++;
}
if(s==2)
{
s=0;
k++;
break;
}
}
for(i=0; i<=2; i++)
{
puts (string)
puts (substring)
}
return 0;
}[/CPP]
Помогите, пожалуйста, найти ошибки. Заранее спасибо.
Это же С++? Забудь в С++ о всяких string.h, char str[] и т. д. --это только порождает ошибки. Используй string:
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
cout << "string? ";
getline(cin, s);
int k;
cout << "k? ";
cin >> k;
string ss1;
string ss2;
if ( k >= s.size() - 1 ) {
ss1 = s;
} else if (s[k] != ' ') {
k = s.find_last_of(' ', k);
if (k != s.npos) {
ss1 = s.substr(0, k);
ss2 = s.substr(k + 1);
} else {
ss2 = s;
}
}
cout << "substring 1: " << ss1 << endl;
cout << "substring 2: " << ss2 << endl;
return 0;
}
ЗЫ: в этом примере слова должны быть разделены пробелами
А можно сюда код?
http://pastebin.com/