Оператор перебора for C++

226
30 декабря 2017, 04:06

В книге Липпмана не работает пример с перебором символов в строке:

#pragma hdrstop  
#include <tchar.h>  
#include<iostream>  
#include<string>  
#include<stdlib>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
(19){
    string str("some string");
     //вывести символы строки str по одному на строку
(21) for(auto c : str) // для каждого символа в строке str
        cout << c << endl; // вывести текущий символ новой строки
    system("pause");
(25)   return 0;
 }

Ошибка:

[bcc32 Error] Main.cpp(21): E2141 Declaration syntax error  
   Full parser context
    Main.cpp(19): parsing: int main(int,char * *)
[bcc32 Error] Main.cpp(25): E2188 Expression syntax
   Full parser context
    Main.cpp(19): parsing: int main(int,char * *)
[bcc32 Error] Main.cpp(26): E2188 Expression syntax
   Full parser context
    Main.cpp(19): parsing: int main(int,char * *)
[bcc32 Error] Main.cpp(26): E2377 For statement missing )
   Full parser context
    Main.cpp(19): parsing: int main(int,char * *)

Компилятор "Embarcadero RAD Studio Berlin 10.1 Update 2 24 x86 x64" (2016 год - не старый)

Answer 1

Судя по всему, у вас очень старый компилятор, так что непонятно, что он умеет.

string str("some string");
//вывести символы строки str по одному на строку
for(int i = 0; i < str.length(); ++i) // для каждого символа в строке str
    cout << s[i] << endl;

Это должно вас спасти...

Answer 2

Запись вида for(auto c : str) стала возможна только начиная с С++11, как вы сами говорите, у вас компилятор 2010 года, соответственно и поддержки С++11 там нет, попробуйте с другим компилятором, всё должно работать

Answer 3
string str("some string");
//вывести символы строки str по одному на строку
for(auto c : str) // для каждого символа в строке str
     cout << c << '\n'; // вывести текущий символ новой строки
так должно работать(endl  нужно убрать из цикла)
READ ALSO
Макросы в #pragma

Макросы в #pragma

Есть библиотека, которая компилируется под разные версии Visual C++ в разных режимах - динамическая, статическая, 64 и 32 разряда

238
Логика конструктора при наследовании

Логика конструктора при наследовании

Почему логика языка С++ позволяет производному классу пользоваться конструктором БЕЗ параметров базового класса, НО НЕ позволяет пользоваться...

391
Потоковая передача видео на сервер

Потоковая передача видео на сервер

ЗдравствуйтеПрошарил весь гугл, но так и не понял даже в какую сторону идти

239
из римских в десятичные

из римских в десятичные

Делаю конвертер из римских цифр в десятичные и вот который час танцую с бубном перед ошибкой, но как то никак

226