1

Тема: Розбити стрічку на масив стрічок

На чистому C++ потрібно взяти стрічку, наприклад

string exp="word1 word2\nword3 word4 word5";

і розбити її на масив стрічок через пробіл чи '\n'
Я знайшов у інтернеті ось цей приклад:

string str = "So she was";
stingstream ss(str); 
string s;
ss >> s; 

Але він не працює, бо компілятор каже що

variable std::stringstream ss has initializer but incomplete type

І як на зло, я бачив цей приклад на кількох сайтах одночасно і у них все працює, а в мене чомусь ні.
Я не хочу далі шукати, бо знайду якийсь приклад, який без подальших пошуків знову не запрацює, це ж не чесно щоб я витратив пів дня на те, щоб приклад запрацював?
Може хтось знає, як це можна зробити простіше та швидше?

2

Re: Розбити стрічку на масив стрічок

Телепатично бачу, що ви не додали хедер. Покажіть увесь код.

3

Re: Розбити стрічку на масив стрічок

koala написав:

Телепатично бачу, що ви не додали хедер. Покажіть увесь код.

Що цікаво, що Dev-Cpp на іншому буці на один і той же код

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main(int argc, char** argv) {
    string str = "So she was";
    stingstream ss(str); 
    string s;
    ss >> s; 
    
    cout << s << endl;
    return 0;
}

Видає різні помилки. Цей на Win7:

stingstream' was not declared in this scope
'ss' was not declared in this scope

Той на XP так і залишилось

variable std::stringstream ss has initializer but incomplete type

4

Re: Розбити стрічку на масив стрічок

DevCpp - це лише редактор, компілятор там зовнішній. Пишіть назву і версію компілятора, якщо вас цікавить, чому по-різному.
Додайте

#include<sstream>
Подякували: hved, Droid 772

5

Re: Розбити стрічку на масив стрічок

Дякую, дійсно "забув" (був неуважний), чи то полінився погуглити sstream, а взагалі я чомусь думав, що все вже включено в iostream.
Де можна дістати повний список хедерів, щоб відредагувати iostream, включивши їх туди?

6

Re: Розбити стрічку на масив стрічок

Не актуально, ще раз дякую, питання вирішено.
Думаю, для початку запасусь хеадерами ось з цього списку:
http://www.cplusplus.com/reference/

<cctype>
<cerrno>
<cfenv>
<cfloat>
<cinttypes>
<ciso646>
<climits>
<clocale>
<cmath>
<csetjmp>
<csignal>
<cstdarg>
<cstdbool>
<cstddef>
<cstdint>
<cstdio>
<cstdlib>
<cstring>
<ctgmath>
<ctime>
<cuchar>
<cwchar>
<cwctype>

<array>
<bitset>
<deque>
<forward_list>
<list>
<map>
<queue>
<set>
<stack>
<unordered_map>
<unordered_set>
<vector>

<atomic>
<condition_variable>
<future>
<mutex>
<thread>


<chrono>
<codecvt>
<complex>
<exception>
<functional>
<initializer_list>
<iterator>
<limits>
<locale>
<memory>

<new>
<numeric>
<random>
<ratio>
<regex>
<stdexcept>
<string>
<system_error>
<tuple>
<typeindex>
<typeinfo>
<type_traits>
<utility>
<valarray>

7

Re: Розбити стрічку на масив стрічок

hved написав:

На чистому C++ потрібно взяти стрічку,

Самі зрозуміли що написали?
Скількома стандартами плюсів володієте, і який з них для вас "чистий"?

8

Re: Розбити стрічку на масив стрічок

Droid 77 написав:
hved написав:

На чистому C++ потрібно взяти стрічку,

Самі зрозуміли що написали?
Скількома стандартами плюсів володієте, і який з них для вас "чистий"?

Та вас (форумчан) не зрозумієш.
То ви кажете не включати в файл хеадери Сі, бо завдання на C++ ,
то тепер кажете що треба Сі використовувати разом із C++.
Все вам не так! Психонув!

Різниця у чому. C++ використовує

#include <iostream>
using namespace std;//std=стандарт

А Сі використовує

#include <stdio.h>
//std=стандарт, io=ввід та вивід, input output

На чистому C++ означає що даний код на компіляторі Сі зовсім не зкомпілюється (всі виклики функцій в помилках)