在我的項目中,我正在閱讀一個程序集文件(目前僅用於測試)。我想看看我正在閱讀的是否是標籤(我相信我的代碼很好)。如果它是一個標籤,我會通過字符獲取標籤字符的全名,並通過索引將它分配給一個字符串索引,以便我可以獲取標籤的全名以備後用。出於某種原因,當我認出我的標籤時,它只是給我第一個字符而不是整個字符串。我相信問題出現在標籤< < < endl;「。更具體地說,我的.asm文件中的第一行有一個A1標籤,所以當我cout標籤時我應該得到A1,但我只得到A.任何關於如何修復給定此代碼的建議:試圖cout一個字符串填充就像一個字符數組,但它只是cout'ing字符串中的第一個字符
#include <iostream>
#include <fstream>
#include <string>
#include <map>
using namespace std;
int main(int argc, char* argv[]) {
int counter = 0;
char x = ' ';
string myFileString = " ";
string label = " ";
if (argc < 2) {
cout << "Error: Not enough arguments in the command line!" << endl;
}
else {
ifstream myFile(argv[1]);
if (!(myFile.is_open())) {
cout << "Error: Could not open the file!" << endl;
}
else {
while (!(myFile.eof())) {
getline(myFile, myFileString);
// Does not have a label
if (myFileString[0] == ' ') {
cout << "No label here!" << endl;
}
// Has a label
else {
while (myFileString[counter] != ' ') {
label[counter] = myFileString[counter];
counter++;
}
cout << label << endl;
counter = 0;
}
}
}
}
cin.get();
cout << endl;
}
感謝您的回覆Maksim!當我嘗試將分配更改爲字符串標籤=「」;沒有引號之間的空格,我的Visual Studio由於某種原因而發生適應。相反,我改變了我的邏輯來使用stringstream!這使得我的整個程序變得更加簡單,我想我剛開始努力的努力:/再次感謝! – Darcendsun