当这不是目的时,C++ 字符串被打印为十六进制
C++ Strings getting printed as hex, when that isnt the purpose
我正在为学校做一个项目,我们应该在其中创建通讯录。
我偶然发现了一个问题,我的程序将字符串打印为六边形符号,我以前从未遇到过这种情况,也不知道如何解决它。
正在终端上打印数组中的字符串。
#include <iostream>
#include <string>
using namespace std;
const int unikapersoner = 75;
string I_namn[unikapersoner];
string T_Nummer[unikapersoner];
void addcontact() {
char Fullname[50];
char TelefonNummer[50];
cin.ignore();
cout << "Ange det fullständiga namnet du vill spara till kontaktboken.. "
<< endl;
cin.getline(Fullname, 50);
cout << "Ange telefonnummeret till personen som du vill spara.. " << endl;
cin.getline(TelefonNummer, 50);
for(int i = 0; i < unikapersoner; i++) {
if(T_Nummer[i] == "[=10=]") { // Letar efter tom index.
I_namn[i] = Fullname;
T_Nummer[i] = TelefonNummer;
break;
}
}
}
void listALLcontacts() {
cout << "/Kontakter/." << endl;
cout << "=================================" << endl;
int nr = 0;
for(int i = 0; i < unikapersoner; i++) {
if(T_Nummer[i] != "[=10=]") {
nr++;
cout << "#" << nr << " " << I_namn << " " << T_Nummer << endl;
cout << "- - - - - - - - -" << endl;
}
}
cout << "=================================" << endl;
if(nr == 0) {
cout << "Du har inga kontakter i din telefonbok..";
}
}
int main() {
int terminalval;
system("CLS");
do {
cout << "Din telefonbok!" << endl;
cout << "1 : Ange ny Kontakt" << endl;
cout << "2 : Se nuvarande Kontakter" << endl;
cout << "3 : Uppdatera kontakt" << endl;
cout << "4 : Radera kontakt" << endl;
cout << "5 : Avsluta" << endl;
cout << "Ange ditt val.." << endl;
cin >> terminalval;
switch(terminalval) {
case 1:
addcontact();
break;
case 2:
listALLcontacts();
break;
case 3:
updatecontacts();
break;
case 4:
deletecontact();
break;
default:
cout << "Är ett felaktigt kommando! " << endl;
}
} while(terminalval != 5);
}
一些输出例如可以是 "#1 0x123123fb123 0x213g2134z13"
我会一如既往地感谢我能得到的所有帮助!
谢谢。
您正在此处打印函数 listALLcontacts
中数组 I_namn
和 T_Nummer
的地址:
cout << "#" << nr << " " << I_namn << " " << T_Nummer << endl;
您应该使用索引 i
来打印找到的条目:
cout << "#" << nr << " " << I_namn[i] << " " << T_Nummer[i] << endl;
一条与您询问的问题无关的注释:
你做几个这样的比较
if(T_Nummer[i] == "[=12=]")
不需要。 "[=19=]"
实际上是 2 char
s 长,由你放在那里的 [=21=]
和一个终止的 [=21=]
组成,所以只需要
if(T_Nummer[i] == "")
甚至更好:
if(T_Nummer[i].empty())
我正在为学校做一个项目,我们应该在其中创建通讯录。 我偶然发现了一个问题,我的程序将字符串打印为六边形符号,我以前从未遇到过这种情况,也不知道如何解决它。
正在终端上打印数组中的字符串。
#include <iostream>
#include <string>
using namespace std;
const int unikapersoner = 75;
string I_namn[unikapersoner];
string T_Nummer[unikapersoner];
void addcontact() {
char Fullname[50];
char TelefonNummer[50];
cin.ignore();
cout << "Ange det fullständiga namnet du vill spara till kontaktboken.. "
<< endl;
cin.getline(Fullname, 50);
cout << "Ange telefonnummeret till personen som du vill spara.. " << endl;
cin.getline(TelefonNummer, 50);
for(int i = 0; i < unikapersoner; i++) {
if(T_Nummer[i] == "[=10=]") { // Letar efter tom index.
I_namn[i] = Fullname;
T_Nummer[i] = TelefonNummer;
break;
}
}
}
void listALLcontacts() {
cout << "/Kontakter/." << endl;
cout << "=================================" << endl;
int nr = 0;
for(int i = 0; i < unikapersoner; i++) {
if(T_Nummer[i] != "[=10=]") {
nr++;
cout << "#" << nr << " " << I_namn << " " << T_Nummer << endl;
cout << "- - - - - - - - -" << endl;
}
}
cout << "=================================" << endl;
if(nr == 0) {
cout << "Du har inga kontakter i din telefonbok..";
}
}
int main() {
int terminalval;
system("CLS");
do {
cout << "Din telefonbok!" << endl;
cout << "1 : Ange ny Kontakt" << endl;
cout << "2 : Se nuvarande Kontakter" << endl;
cout << "3 : Uppdatera kontakt" << endl;
cout << "4 : Radera kontakt" << endl;
cout << "5 : Avsluta" << endl;
cout << "Ange ditt val.." << endl;
cin >> terminalval;
switch(terminalval) {
case 1:
addcontact();
break;
case 2:
listALLcontacts();
break;
case 3:
updatecontacts();
break;
case 4:
deletecontact();
break;
default:
cout << "Är ett felaktigt kommando! " << endl;
}
} while(terminalval != 5);
}
一些输出例如可以是 "#1 0x123123fb123 0x213g2134z13" 我会一如既往地感谢我能得到的所有帮助! 谢谢。
您正在此处打印函数 listALLcontacts
中数组 I_namn
和 T_Nummer
的地址:
cout << "#" << nr << " " << I_namn << " " << T_Nummer << endl;
您应该使用索引 i
来打印找到的条目:
cout << "#" << nr << " " << I_namn[i] << " " << T_Nummer[i] << endl;
一条与您询问的问题无关的注释:
你做几个这样的比较
if(T_Nummer[i] == "[=12=]")
不需要。 "[=19=]"
实际上是 2 char
s 长,由你放在那里的 [=21=]
和一个终止的 [=21=]
组成,所以只需要
if(T_Nummer[i] == "")
甚至更好:
if(T_Nummer[i].empty())