Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.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++ 为什么一个简单的字符不能工作?_C++_String_Pointers_Char_Cout - Fatal编程技术网

C++ 为什么一个简单的字符不能工作?

C++ 为什么一个简单的字符不能工作?,c++,string,pointers,char,cout,C++,String,Pointers,Char,Cout,我想让你看看下面两个代码,告诉我为什么第一个可以工作,而另一个不能 第一个代码(工作): #包括 #包括 使用名称空间std; char*getCoordinates(char*android) {//访问数据库并获取南纬值 //这是用于测试的虚拟数据 const char*S=“27.19122859”; const char*N=“27.19245011”; const char*W=“31.17657602”; const char*E=“31.17657602”; 字符X[100]=“”

我想让你看看下面两个代码,告诉我为什么第一个可以工作,而另一个不能

第一个代码(工作):

#包括
#包括
使用名称空间std;
char*getCoordinates(char*android)
{//访问数据库并获取南纬值
//这是用于测试的虚拟数据
const char*S=“27.19122859”;
const char*N=“27.19245011”;
const char*W=“31.17657602”;
const char*E=“31.17657602”;
字符X[100]=“”;
strncat(X,“S”,1);
strncat(X,S,strlen);;
strncat(X,“N”,1);
strncat(X,N,strlen(N));
strncat(X,“W”,1);
strncat(X,W,strlen(W));
strncat(X,“E”,1);
strncat(X,E,strlen(E));
char*Y=X;

cout您返回一个指向
char
数组的指针,该数组的生存期仅与函数相同。当函数返回数组时,该数组不再有效。

您返回一个指向
char
数组的指针,该数组的生存期仅与函数相同。当函数返回数组时,该数组不再有效。

> 它不起作用,因为函数getCoordinates返回指向缓冲区的指针,该缓冲区具有函数getCoordinates的本地作用域,并且在函数返回后被销毁。使用std::string而不是char,它将起作用。

它不起作用,因为函数getCoordinates返回指向缓冲区的指针,该缓冲区具有函数getCoordinates的本地作用域ion getCoordinates并在函数返回后被销毁。使用std::string而不是char,它将正常工作。

为什么不使用
std::string
,它在这里就可以工作?非常感谢:)为什么不使用
std::string
,它在这里就可以工作?非常感谢:)我会尝试使用它使用字符串,然后将该字符串转换为另一个函数的输入所需的字符*。@SamerBastawy您可以始终使用
c_str()
来自
std::string
。谢谢:)我将尝试使用一个字符串,然后将该字符串转换为另一个函数所需的字符*。@SamerBastawy您始终可以使用
std::string
中的
c_str()
。谢谢。谢谢。谢谢。谢谢。谢谢。谢谢。谢谢
#include <iostream>
#include <string.h>

using namespace std;

char* getCoordinates(char* AndroidID)
{//Access the database and get the South Latitude value
    //This is here is dummy data for testing
    const char* S = "27.19122859";
    const char* N = "27.19245011";
    const char* W = "31.17657602";
    const char* E = "31.17657602";
    char X[100]="";
    strncat(X, "S", 1);
    strncat(X, S, strlen(S));
    strncat(X, "N", 1);
    strncat(X, N, strlen(N));
    strncat(X, "W", 1);
    strncat(X, W, strlen(W));
    strncat(X, "E", 1);
    strncat(X, E, strlen(E));
    char* Y = X;
    cout<<Y;
    return Y;
}
int main()
{
    char* sda=NULL;
    getCoordinates(sda);
    return 0;
}
#include <iostream>
#include <string.h>

using namespace std;

char* getCoordinates(char* AndroidID)
{//Access the database and get the South Latitude value
    //This is here is dummy data for testing
    const char* S = "27.19122859";
    const char* N = "27.19245011";
    const char* W = "31.17657602";
    const char* E = "31.17657602";
    char X[100]="";
    strncat(X, "S", 1);
    strncat(X, S, strlen(S));
    strncat(X, "N", 1);
    strncat(X, N, strlen(N));
    strncat(X, "W", 1);
    strncat(X, W, strlen(W));
    strncat(X, "E", 1);
    strncat(X, E, strlen(E));
    char* Y = X;
    return Y;
}

int main()
{
    char* sda=NULL;
    char* T=getCoordinates(sda);
    cout<<T;
    return 0;
}