Я пытаюсь split
a string
и он работает. Просто, когда я печатаю его console
, я получаю странный output
вот так - ╨╕ [╝. Может быть, кто-то может дать намек на то, что я делаю неправильно? Вот мой кодC++ разбиение строки дает странный вывод
#include <stdio.h>
#include <windows.h>
#include <string>
#include <sstream>
#include <vector>
using namespace std;
vector<string> &split(const string &s, char delim, vector<string> &elems);
vector<string> split(const string &s, char delim);
int main() {
vector<string> x = split("E:\\TEST\\filename.txt", '\\');
int pos = x.size() - 1;
printf("filename is %s\n", &x.at(pos));
system("PAUSE");
return 0;
}
vector<string> &split(const string &s, char delim, vector<string> &elems) {
stringstream ss(s);
string item;
while (getline(ss, item, delim)) {
elems.push_back(item);
}
return elems;
}
vector<string> split(const string &s, char delim) {
vector<string> elems;
split(s, delim, elems);
return elems;
}
'вектор & раскол (константную строку & с, обугленный DELIM , вектор & elems) {/ * ... */return elems; } '- просто интересно - почему есть возвращаемое значение, если вы его не используете? –
Почему бы не отладить его, чтобы увидеть, что именно происходит? и почему вы думаете, что вам нужно «возвращаться»? Вы проходите по ссылке, поэтому нет необходимости возвращать ее снова. Просто 'void' это –
@underscore_d Он не возвращает ссылку на локальную переменную. 'elems' в' return elems' - это неконстантная ссылка, переданная в качестве параметра. –