2017-01-13 4 views
-4

Итак, я пишу проблему с использованием строковых данных, и я понял, что что-то не так в самом входе. Вот мой код:Проблемы с строковыми данными

#include <iostream> 
#include <string> 

using namespace std; 

int main() 
{ 
    int N; 
    string a, b; 

    cin >> N; 
    string arr[1650]; 

    for (int i = 0; i < N; i++) 
    { 
     cin >> a >> b; 
     arr[i] = a; 
    } 

    for (int i = 0; i < N; i++) 
    { 
     cout << arr[i] << " " << i << endl; 
    } 
} 

Когда эти выходы, первые 102 строк печатаются должным образом, то остальные все повторы одной строки.

Я не знаю, что происходит.

+0

Почему вы не храните 'b'? – NathanOliver

+0

Также почему вы создаете гигантский массив 'string arr [200000];'? Это кажется очень неэффективным (и проблематичным, если пользователь решает ввести более 200000 строк) – UnholySheep

+0

У меня есть все остальная часть кода эффективно с другими вещами, но эта ошибка не позволяет чему-то еще работать, поэтому я пытаюсь исправить сначала –

ответ

0

Его немного сложно понять, что происходит не так. Я не совсем понимаю, какова цель вашей переменной b.

Я пробовал ваш код, и он работал нормально. Должен признаться, я не ввел 102 строки вручную на консоль ...

Вы пробивали входные данные из файла?

я полировал немного, может быть, вы можете попробовать и посмотреть, что если вы все еще получаете это странное после 102-строки-повтора вопроса:

#include <iostream> 
#include <string> 
#include <vector> 

using namespace std; 

int main() 
{ 
    int N; 
    vector<string> string_vector; 

    cout << "Enter number of strings to enter:" << endl; 
    cin >> N; 

    cout << "Please enter " << N 
    << " strings, separated by white space:" << endl; 

    string_vector.resize(N); 

    for(auto& s : string_vector) 
     cin >> s; 

    cout << "Strings entered:" << endl; 

    for(auto& s : string_vector) 
     cout << s << endl; 

    return 0; 
} 

Обратите внимание, что вам нужно C++ 11 скомпилируйте это, но если ваш компилятор не очень старый, это не должно быть проблемой.

+0

Большое спасибо за продуманную обратную связь! По какой-то странной причине даже это не работает на моем компиляторе. Он компилируется, но после 204-й строки он больше не отказывается выводить. Я думаю, что в данный момент это проблема с тестовыми данными, но она выглядит совершенно нормально ... вы бы хотели попробовать тестовые данные, хотя ваш компилятор и посмотреть, не сработает ли это? –

+0

Добро пожаловать. Я серьезно сомневаюсь, что вы действительно испытываете проблему с компилятором. Возможно, вы можете проверить входные данные. Возможно, есть проблема с возвратом каретки и подачей строки. Возможно, оболочка делает что-то странное. Как именно вы подаете ввод в свою программу? Когда вы экспериментировали с вашим вводом, и вы все еще не поняли проблему, я мог бы попытаться использовать ваши данные на моей стороне, если хотите. – ThorOdinsson

Смежные вопросы