我最近一直在用C编程,我想知道如何做到这一点:
printf("Hello %s" &username);
在C ++中
cout << "Hello %s" &username;
不起作用。我还是新人,所以很容易。
答案 0 :(得分:4)
那将是:
cout << "Hello " << username;
不需要传递地址,就像尝试打印指针一样。您也可以通过执行等同于cout << x1 << x2
的{{1}}链接来电。这是有效的,因为第一次调用的结果返回流,因此您再次使用运算符函数。
链式调用与以下内容相同:
(cout << x1) << x2
答案 1 :(得分:2)
你仍然可以在C ++中使用printf,尽管你必须正确地使用它。
#include <stdio.h>
int main() {
char username[] = "Slartibartfast";
printf("User: %s\n", username);
return 0;
}
然而,正确的“C ++方式”是使用iostream
#include <iostream>
#include <string>
int main() {
std::string username = "Slartibartfast";
std::cout << "User: " << username << '\n';
return 0;
}
C ++流主要使用<<
(写入)和>>
(读取)运算符,但它们也有自己的成员函数来执行更复杂的操作,并且有一些辅助函数就像阅读整行一样。
#include <iostream>
#include <string>
int main() {
std::cout << "Enter a username:\n";
std::string username;
std::cin >> username;
if (username.empty()) {
std::cerr << "Empty username was input. Aborting\n";
return 1;
}
std::cout << "Welcome, " << username << std::endl;
std::cout << "Tell me what else you'd like this program to do?\n";
std::string feedback;
std::getline(cin, feedback);
std::cout << "Thank you, you typed " << feedback.size() << " characters of input which I will now ignore.\n";
return 0;
}
一些解释:
std
是一个名称空间,大多数C ++标准函数/例程都放在该名称空间中。这有助于避免与用户定义的函数/对象/变量发生冲突。
::
表示“属于”,从右到左阅读,std::cin
表示cin belonging to std
。
cin
相当于stdin
cout
相当于stdout
cerr
相当于stderr
endl
一个特殊对象,它写一个“\ n”并强制刷新输出缓冲区。
std::getline
可让您阅读iostream
到std::string
<<
是一个名为operator<<
的函数的快捷方式,它接受一个iostream和一个东西,并返回iostream,因此你可以菊花链:
std::cout << "Hello, " << 42 << " days since last " << adjective << " accident\n";
答案 2 :(得分:0)
cout<<"Hello "<<username;
答案 3 :(得分:0)
由于函数重载,您无需指定cout
应如何解释传递的内容。基本上,大多数基本类型(operator<<
,int
,string
等都会重载char
版本。因此你可以简单地写
cout << "Hello " << username;
答案 4 :(得分:0)
cout << "Hello " << username << endl;