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;
}