C#函数转C++

奕诚 2012-07-02 02:35:38
     
string GetTimeStr(string seconds, string format)
{
string Result = "";
TimeSpan ts = TimeSpan.FromSeconds(double.Parse(seconds));

string[] formats = format.Split(':', '.');
string[] values = new string[4];
values[0] = ts.Hours.ToString("00");
values[1] = ts.Minutes.ToString("00");
values[2] = ts.Seconds.ToString("00");
values[3] = ts.Milliseconds.ToString("000");


switch (formats.Length)
{
case 1:
Result = values[0];
break;
case 2:
Result = values[0] + ":" + values[1];
break;
case 3:
Result = values[0] + ":" + values[1] + ":" + values[2];
break;
case 4:
Result = values[0] + ":" + values[1] + ":" + values[2] + "." + values[3];
break;
}

return Result;
}

如何将以上的C#函数转为C++形式的呢?
...全文
190 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
奕诚 2012-07-02
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]

int不能直接转换成string。
C/C++ code
char acTmp[10] = {0};
sprintf(acTmp ,"%d" ,ts.GetHours());
values[0] = acTmp;


引用 12 楼 的回复:

string GetTimeStr(string seconds, string format)
{

string Result ……
[/Quote]这个地方的确是有错,谢谢!
奕诚 2012-07-02
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]

int不能直接转换成string。
C/C++ code
char acTmp[10] = {0};
sprintf(acTmp ,"%d" ,ts.GetHours());
values[0] = acTmp;


引用 12 楼 的回复:

string GetTimeStr(string seconds, string format)
{

string Result ……
[/Quote]这个是按C#代码改的,其实也不知道要不要获取小时的时间值哦,谢谢!
cobra_chen 2012-07-02
  • 打赏
  • 举报
回复
另:string不能有那么多相加。
改过之后代码编译通过。
运行楼主还是自己调试吧。
case 2:
Result += values[0];
Result += ":";
Result += values[1];

[Quote=引用 13 楼 的回复:]

int不能直接转换成string。
C/C++ code
char acTmp[10] = {0};
sprintf(acTmp ,"%d" ,ts.GetHours());
values[0] = acTmp;


引用 12 楼 的回复:

string GetTimeStr(string seconds, string format)
{

string Result ……
[/Quote]
cobra_chen 2012-07-02
  • 打赏
  • 举报
回复
int不能直接转换成string。
char acTmp[10] = {0};
sprintf(acTmp ,"%d" ,ts.GetHours());
values[0] = acTmp;


[Quote=引用 12 楼 的回复:]

string GetTimeStr(string seconds, string format)
{

string Result = "";

CTimeSpan ts; //= CTimeSpan.FromSeconds(double.Parse(seconds));
ts.GetTotalSeconds();

char str[32] = "0";
……
[/Quote]
奕诚 2012-07-02
  • 打赏
  • 举报
回复
string GetTimeStr(string seconds, string format)
{

string Result = "";

CTimeSpan ts; //= CTimeSpan.FromSeconds(double.Parse(seconds));
ts.GetTotalSeconds();

char str[32] = "0";
char* formats;
strcpy(str, format.c_str());
formats = strtok( str, ":." );
vector<char*> vec;
while( formats != NULL )
{
/* Get next token: */
vec.push_back(formats);
formats = strtok( NULL, ":." );
}

string values[4] ;
//values[0] = ts.Hours.ToString("00");
values[0] = ts.GetHours(); //赋值有问题

char TimeStr0[32] = "00";
strcpy(TimeStr0, values[0].c_str());
// sprintf(TimeStr0,"00");
strcpy(TimeStr0,"00");

//TimeStr0 = ts.Format("00");
values[1] = ts.GetMinutes();
char TimeStr1[32] = "0";
strcpy(TimeStr1, values[1].c_str());


// sprintf(TimeStr1,"00");
strcpy(TimeStr1,"00");

values[2] = ts.GetSeconds();
// values[2] = atoi(seconds.c_str());
char TimeStr2[32] = "0";
strcpy(TimeStr2, values[2].c_str());
// sprintf(TimeStr2,"00");
strcpy(TimeStr2,"00");

SYSTEMTIME St ;
::GetLocalTime(&St);
values[3] = St.wMilliseconds;
char TimeStr3[32] = "0";
strcpy(TimeStr3, values[3].c_str());
strcpy(TimeStr3,"00");

int n = vec.size();

switch ( n ) // int n = sizeof(formats) / sizeof(formats[0]);
{
case 1:
Result = values[0];
break;
case 2:
Result = values[0] + ":" + values[1];
break;
case 3:
Result = values[0] + ":" + values[1] + ":" + values[2];
break;
case 4:
Result = values[0] + ":" + values[1] + ":" + values[2] + "." + values[3];
break;
}

return Result;
}

附上个人改的C++形式代码,不过还是有问题的……给values赋时间值时有问题。
奕诚 2012-07-02
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

value[4]是什么类型?
如果是char[]的数据,那么就要用strcpy。
-
另没明白楼主的意图。
理解能力不好。

引用 7 楼 的回复:

引用 6 楼 的回复:

转换主要的难度在于字符串的分解,这里给你一个字符串分解的例子:
C/C++ code

int main(void)
{
vector<string> strvec;
char str……
[/Quote]
string[] values = new string[4]; value[4]是个字符串数组,我对C#也不是很了解,只是根据在VS下运行的情况作个说明,你有装VS的话也可以发给你瞧个仔细的,谢谢!
cobra_chen 2012-07-02
  • 打赏
  • 举报
回复
value[4]是什么类型?
如果是char[]的数据,那么就要用strcpy。
-
另没明白楼主的意图。
理解能力不好。

[Quote=引用 7 楼 的回复:]

引用 6 楼 的回复:

转换主要的难度在于字符串的分解,这里给你一个字符串分解的例子:
C/C++ code

int main(void)
{
vector<string> strvec;
char str[] ="addd,bs,cgwg, we;f d*e";
const char * split = ",* ;";
char * p;
……

谢谢,字符分……
[/Quote]
奕诚 2012-07-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

上正则表达式吧。有个库叫pcre。
[/Quote]
好的,谢谢,我去看看……
jiandingzhe 2012-07-02
  • 打赏
  • 举报
回复
上正则表达式吧。有个库叫pcre。
奕诚 2012-07-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

转换主要的难度在于字符串的分解,这里给你一个字符串分解的例子:
C/C++ code

int main(void)
{
vector<string> strvec;
char str[] ="addd,bs,cgwg, we;f d*e";
const char * split = ",* ;";
char * p;
……
[/Quote]
谢谢,字符分解的我用strtok,不过你这个方法我也会试试的……上面的转换我主要是不知道怎么把传进来的seconds赋给values[4]中去……
图灵狗 2012-07-02
  • 打赏
  • 举报
回复
转换主要的难度在于字符串的分解,这里给你一个字符串分解的例子:

int main(void)
{
vector<string> strvec;
char str[] ="addd,bs,cgwg, we;f d*e";
const char * split = ",* ;";
char * p;
p = strtok (str,split);
while(p!=NULL)
{
string str = p;
cout<<str<<endl;
p = strtok(NULL,split);
}

return 0;
}
奕诚 2012-07-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

有C#转换成C++的功能网站和工具
当然 有时候不太准确
百度下
[/Quote]
我有找过,不过缺少dll库,用不了哦……
奕诚 2012-07-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

你叙述下函数功能吧,C#不是很了解啊……
[/Quote]
当调用函数GetTimeStr(13.13,,00:00)时,字符串数组formats 会根据传进来的参数按“.:”分割成“00”“00”,变成两个有元素的字符串数组formats ;string[] values = new string[4];
四个元素会初始化为:小时格式的values[0]=“00”;分钟格式的values[1]=“00”;秒针格式的values[2]=“13”;毫秒格式的values[4]=“130”; 然后switch (formats.Length)中formats.Length算出formats 数组元素个数为2,执行case 2: Result = values[0] + ":" + values[1];
Result 最后值为:00:00 整个函数起到格式化作用,你有装VS的话可以将其demo工程发给你。
奕诚 2012-07-02
  • 打赏
  • 举报
回复
当调用函数GetTimeStr(13.13,,00:00)时,字符串数组formats 会根据传进来的参数按“.:”分割成“00”“00”,变成两个有元素的字符串数组formats ;string[] values = new string[4];
四个元素会初始化为:小时格式的values[0]=“00”;分钟格式的values[1]=“00”;秒针格式的values[2]=“13”;毫秒格式的values[4]=“130”; 然后switch (formats.Length)中formats.Length算出formats 数组元素个数为2,执行case 2: Result = values[0] + ":" + values[1];
Result 最后值为:00:00 整个函数起到格式化作用,你有装VS的话可以将其demo工程发给你。
HandanXiaoliang 2012-07-02
  • 打赏
  • 举报
回复
有C#转换成C++的功能网站和工具
当然 有时候不太准确
百度下
酱油党 2012-07-02
  • 打赏
  • 举报
回复
你叙述下函数功能吧,C#不是很了解啊……

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧