C++ 在C++;为什么对std::string的单个字符的引用会给出一个数字

C++ 在C++;为什么对std::string的单个字符的引用会给出一个数字,c++,string,character,substring,C++,String,Character,Substring,我有这样一个字符串: std::string N; N = "Ant"; g++ c.cpp -o c 我指定一个(测试)值,如下所示: std::string N; N = "Ant"; g++ c.cpp -o c 要打印第一个字符,我执行了以下操作: std::cout << N[0]; 为什么它会给出一个数字,是否有一种替代putchar的方法,可以避免使用旧的头文件stdio.h 谢谢 其他信息: 编译器:gcc版本4.6.3(Ubuntu/Linaro 4.

我有这样一个字符串:

std::string N;
N = "Ant";
g++ c.cpp -o c
我指定一个(测试)值,如下所示:

std::string N;
N = "Ant";
g++ c.cpp -o c
要打印第一个字符,我执行了以下操作:

std::cout << N[0];
为什么它会给出一个数字,是否有一种替代putchar的方法,可以避免使用旧的头文件
stdio.h

谢谢

其他信息: 编译器:gcc版本4.6.3(Ubuntu/Linaro 4.6.3-1ubuntu5)

完整的代码示例:

#include <iostream>
#include <string>
#include <stdio.h>
main()
{
 std::string N;

 N = "Ant"; 
 std::cout << N[0]; //output 65
 putchar(N[0]); //output A
}

在我的Debian/Sid/x86-64上,下面的程序(在源文件
itsols.cc
中,使用命令
g++-Wall-itsols.cc-o itsols
编译)

#包括
#包括
int main(int,char**){
std::string s=“Hello”;

std::cout您使用的编译器是什么?向我们展示一个完整的示例代码。适用于gcc 4.7.1,请参阅。回答这个问题需要一个完整的示例程序,因为问题中有一些重要的细节不在您的问题中,您可以从上面评论中的链接中看到。感谢您的建议。显然,这是t的问题他是一个编译器。我不知道是什么。但是由于你对
主签名的很好解释,我接受了你的答案。我对GCC/G++非常陌生,因为我是从旧的Turbo C版本1中恢复过来的,我看到了很多不同:)谢谢!养成以下好习惯:使用一个版本控制系统,比如,即使对于小型单人项目也是如此。使用一个好的编辑器(如
emacs
)。使用
g++-Wall-g
编译。改进代码直到没有警告。学习使用
gdb
调试器和构建多源文件程序。充分利用Linux是免费软件,这样你就可以学习(并改进)您需要的任何软件的源代码。@itsols您的编译器是否仍有问题?您可以尝试卸载并重新安装它。@MrLister我不知道为什么,但问题发生后发生了一些事情。apt更新、构建软件包、重新启动…我不确定是什么解决了它。但我想我会坚持Basile的方法,直到我得到解决这就解决了。我不是GCC专家。我从Turbo/Borland C引入了我的旧代码(20年),我发现这是一个完全不同的东西,从标题开始:)