2014-10-01 3 views
-5

Я имею дело с прилагаемой строки, но в первую очередь, Кодекс:Строка Concat не работает как задумано

#include <fstream> 
#include <iostream> 
#include <vector> 

using namespace std; 

int main() { 
    string current; 
    string filename; 

    vector<string> vec(0); 

    cout << endl << "Bitte Name der Eingabedatei angeben:" << endl; 
    cin >> filename; 

    ifstream infile(filename); 

    while(std::getline(infile, current)) { 
     vec.push_back(string(current)); 
    } 

    for(size_t i = 0; i < vec.size(); i++) { 
     string tmpLine = ""; 
     int semiCount = 0; 

     //tmpLine.push_back('"'); 
     for(size_t j = 0; j < vec[i].size(); j++) { 

      if(vec[i].at(j) == ';' && semiCount > 1) { 
       tmpLine += ("\""); 
       tmpLine += (","); 
       tmpLine += ("\""); 
       semiCount++; 

      } else if(vec[i].at(j) == ';' && semiCount == 0) { 
       tmpLine += (","); 
       tmpLine += (" "); 
       semiCount++; 
      } else if(vec[i].at(j) == ';' && semiCount == 1) { 
       string tmpName = tmpLine; 
       tmpLine += ("\""); 
       tmpLine += (","); 
       tmpLine += ("\""); 
       tmpLine += tmpName; 
       tmpLine += ("\""); 
       tmpLine += (","); 
       tmpLine += ("\""); 
       semiCount++; 
      } else { 
       tmpLine += vec[i].at(j); //seems to the problem 
      } 
      cout << tmpLine << endl; 
     } 

     tmpLine += ("dddd"); //works until here 
     cout << tmpLine << endl; 
     vec[i] = tmpLine; 
    } 

    return 0; 
} 

Я хочу, чтобы открыть файл и в основном переформатировать. Это прекрасно работает, пока я не хочу добавить что-то в строку, где я добавляю «dddd». Выход состоит в следующем:

.........................

Констанце, Адамек-Олбрих "(перед добавлением)

ddddtanze, Адамек-Олбрих "(после добавления)

..........................

Вместо добавления он до конца строки заменяет первый набор символов.

Я понятия не имею, почему это так. Удаление всего цикла и просто создание tmpLine = "test" делает работу над дополнением, но я не вижу проблемы в конце концов ...

EDIT: Решили проблему: в конце концов, кажется, невидимый персонаж строк, которые я импортирую из своего файла, что вызывает проблемы. Если я пропущу его, он будет работать.

Извините, если вопрос не задан правильно, это мой первый вопрос здесь, в StackOverflow!

Но спасибо за рассказ, я постараюсь сделать лучше в следующий раз!

+0

является то, что [MCVE] (HTTPS: // stackoverflow.com/help/mcve)? – Deduplicator

+0

@Deduplicator Не уверен! По крайней мере, есть стена кода, которая, вероятно, должна была быть передана в стороннюю онлайн-среду и собирать соответствующие части для примера здесь. Кроме того, очевидно, что отладки не было предпринято. –

+0

Очевидно, вы не пробовали отлаживать свой код, как сказал @ πάνταῥεῖ. – cybermonkey

ответ

2

Я думаю, у вас есть проблемы с окончанием строки.

Строка содержит возврат каретки (но не канал), и, следовательно, курсор возвращается в столбец 0 текущей строки перед печатью ddddd. Обратите внимание, что конкатенация строк прекрасна.

Наиболее вероятной причиной является, если входной линии имеет концевые конвенции Windows (CR + LF) и выходной терминал/поток использует Unix концевые линии конвенции (только LF)

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