Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用scanf和C++;_C++_Xcode - Fatal编程技术网

C++ 如何使用scanf和C++;

C++ 如何使用scanf和C++;,c++,xcode,C++,Xcode,我已经尝试了大多数字符串和字符格式类型,但它们都不起作用,我不知道为什么。这是我的密码: #include <iostream> #include <stdio.h> using namespace std; int main(int argc, const char * argv[]) { // insert code here... string string2; string string; cout << "Hel

我已经尝试了大多数字符串和字符格式类型,但它们都不起作用,我不知道为什么。这是我的密码:

#include <iostream>
#include <stdio.h>

using namespace std;
int main(int argc, const char * argv[])
{

    // insert code here...
    string string2;
    string string;

    cout << "Hello, World!\n";
    printf("Hi my name is Josh %s\n",string2);
    scanf("%s",&string);
    printf("hi %s",string);
}
#包括
#包括
使用名称空间std;
int main(int argc,const char*argv[]
{
//在这里插入代码。。。
弦2;
字符串字符串;
cout您正在显示的内容(
scanf(“%s”,&string);
)不起作用(并且永远不会起作用,例如,通过提供不同的格式说明符)

%s
格式说明符一起使用的
scanf()
需要相应的
char*
指针引用原始
char[]
array以接收参数列表中读取的数据。不过,您在示例中传递的
std::string
指针不会自动转换到内部管理的
std::string
实例
char[]
缓冲区

你可以试着用它来代替,但我不建议你这么做,除非你非常确定自己在做什么

因为你最好使用
std::cin

std::istream&operator>>(std::istream&,const std::string&)
相反:

std::cout输入;
(顺便说一句,这与您的问题无关!)

您正在显示的内容(
scanf(“%s”,&string);
)不起作用(并且永远不会起作用,例如,通过提供不同的格式说明符)

%s
格式说明符一起使用的
scanf()
需要相应的
char*
指针引用原始
char[]
array以接收参数列表中读取的数据。不过,您在示例中传递的
std::string
指针不会自动转换到内部管理的
std::string
实例
char[]
缓冲区

你可以试着用它来代替,但我不建议你这么做,除非你非常确定自己在做什么

因为你最好使用
std::cin

std::istream&operator>>(std::istream&,const std::string&)
相反:

std::cout输入;

(顺便说一句,这与你的问题无关!)

你不应该将
std::cout
::printf
混在一起。更喜欢使用
stdio
中的over C函数

您的代码应该有点像这样:

#include <iostream>

int main()
{
    std::string string2;
    std::string other_string;

    std::cout << "Hello, World!\n";
    std::cout << "Hi my name is Josh " <<  string2 << '\n';
    std::cin >> other_string;
    std::cout << "hi " << other_string;
}
#包括
int main()
{
std::string2;
std::字符串其他_字符串;

std::cout您不应该将
std::cout
::printf
混合使用。更喜欢使用
stdio
中的over C函数

您的代码应该有点像这样:

#include <iostream>

int main()
{
    std::string string2;
    std::string other_string;

    std::cout << "Hello, World!\n";
    std::cout << "Hi my name is Josh " <<  string2 << '\n';
    std::cin >> other_string;
    std::cout << "hi " << other_string;
}
#包括
int main()
{
std::string2;
std::字符串其他_字符串;

STD:Case> SCANF< <代码> %S/<代码>格式说明符需要匹配的字符数组参数,而不是<代码> STD::String 。一般来说,C和CPP样式的混合不是好主意。正如已经提到的,您应该使用STD::CIN。如果您正在读取一个字符串,比如“Joh姓氏”,可以考虑CIN。GETLIN()如果您真的想使用SCANF,那么请考虑sSCANF。使用<代码> STD::GETLIN(STD:CIN,StRIG2)格式说明符需要匹配的字符数组参数,而不是<代码> STD::String 。C和CPP样式的混合一般不是好主意。正如已经提到的,您应该STD::CIN。如果您正在读取一个字符串,比如“Joh姓氏”,可以考虑CIN。GETLIN()。如果您真的想使用SCANF,那么请考虑sSCANF。使用<代码> STD::GETLIN(STD:CIN,StRIG2);< /代码>