问题列表 - 第603页

C++:如何将fprintf结果作为std :: string w/o sprintf

我正在使用一个用C++实现的开源UNIX工具,我需要更改一些代码才能让它做我想做的事情.我想做出尽可能小的改变,希望上传接受我的补丁.可以在标准C++中实现并且不创建更多外部依赖性的解决方案是首选.

这是我的问题.我有一个C++类 - 我们称之为"A" - 目前使用fprintf()将其格式严格的数据结构打印到文件指针.在其print函数中,它还递归调用几个成员类的相同定义的打印函数("B"是一个例子).还有另一个C类,它有一个成员std :: string"foo",需要设置为A实例的print()结果.把它想象成A的to_str()成员函数.

在伪代码中:

class A {
public:
  ...

  void print(FILE* f);
  B b;

  ...  
};

...

void A::print(FILE *f)
{
  std::string s = "stuff";
  fprintf(f, "some %s", s);
  b.print(f);
}

class C {
  ...
  std::string foo;
  bool set_foo(std::str);
  ...
}

...

A a = new A();
C c = new C();

...

// wish i knew how to write A's to_str()
c.set_foo(a.to_str());
Run Code Online (Sandbox Code Playgroud)

我应该提到C是相当稳定的,但是A和B(以及A的其余部分)处于不稳定的状态,因此所需的代码变化越少越好.还需要保留当前的打印(FILE*F)界面.我已经考虑了几种实现A :: to_str()的方法,每种方法都有优点和缺点:

  1. 将对fprintf()的调用更改为sprintf()

    • 我不必重写任何格式字符串
    • print()可以重新实现为:fprint(f,this.to_str());
    • 但是我需要手动分配char [] s,合并很多c字符串,最后将字符数组转换为std :: string
  2. 尝试在字符串流中捕获a.print()的结果 …

c++ unix format printf stdstring

18
推荐指数
2
解决办法
3万
查看次数

如何使用"%f"将double值填充到具有正确精度的字符串中

我试图用这样的方法填充一个带有double值的字符串sprintf:

sprintf(S, "%f", val);
Run Code Online (Sandbox Code Playgroud)

但精度正在被削减到小数点后六位.我需要大约10个小数位才能达到精度.

怎么能实现呢?

c floating-point precision printf

6
推荐指数
2
解决办法
3万
查看次数

按不同的日期拆分列表

另一个容易的希望.

假设我有一个这样的集合:

List<DateTime> allDates;
Run Code Online (Sandbox Code Playgroud)

我想把它变成

List<List<DateTime>> dividedDates;
Run Code Online (Sandbox Code Playgroud)

其中'divideDates'中的每个List包含'allDates'中属于不同年份的所有日期.

是不是有一点LINQ诡计让我疲惫的头脑现在无法挑选出来?

接受的答案是正确的.

谢谢,我不认为我知道GroupBy的'into'位,我试图使用.GroupBy()类方法而不是SQL语法.并感谢您确认ToList()修正案并将其包含在接受的答案中:-)

c# linq

8
推荐指数
2
解决办法
4820
查看次数

如何将文件扩展名与C#中的当前可执行文件关联

我想将文件扩展名与C#中的当前可执行文件相关联.这样,当用户在资源管理器中点击该文件后,它将以给定文件作为第一个参数运行我的可执行文件.理想情况下,它还会将给定文件扩展名的图标设置为我的可执行文件的图标.谢谢大家.

c# windows winforms

53
推荐指数
8
解决办法
5万
查看次数

您在Oracle中编写和编辑存储过程有什么用?

在Oracle中编辑和编写存储过程有很多选项; 什么是最好的工具,为什么?(每个答案一个工具.)

sql oracle toad stored-procedures oracle-sqldeveloper

3
推荐指数
2
解决办法
8792
查看次数

如何配置Mac OS X的Apache服务器?

Mac OS X预装了apache,但文件位于非标准位置.这个问题是一个收集有关配置文件所在位置的信息的地方,以及如何调整apache安装以执行诸如提供php页面之类的操作.

apache macos

11
推荐指数
2
解决办法
1万
查看次数

你如何使用gnuplot的内置字体?

gnuplot文档有关于字体的说法:

    Five basic fonts are supported directly by the gd library. These are
    `tiny` (5x8 pixels), `small` (6x12 pixels), `medium`, (7x13 Bold), 
    `large` (8x16) or `giant` (9x15 pixels).

但是,当我尝试使用一个:

    gnuplot> set terminal png font tiny

我明白了:

    Could not find/open font when opening font tiny, using default

我如何使用这些看似内置的字体?

gnuplot

5
推荐指数
1
解决办法
1万
查看次数

DOCTYPE声明是否必须是HTML文档中的第一个标记?

当客户端请求页面时,我们的安全管理器会在每个html页面的顶部动态插入一些javascript.它被插入DOCTYPE语句之上.我认为这可能是我遇到布局问题的原因.

想法有人吗?

html doctype

11
推荐指数
2
解决办法
8662
查看次数

如何使用Nant/Ant命名模式?

我必须承认,我总是忘记Nant命名模式的语法内部(例如文件集中使用的那些).在我看来,双星号/单星号的东西似乎是非常容易忘记的.

有人可以提供命名模式的权威指南吗?

ant nant

93
推荐指数
3
解决办法
4万
查看次数

C#中"this"赋值的示例是什么?

有人this在C#方法中有分配的有用示例吗?在求职面试中我被要求过一次,我仍然有兴趣回答自己.

c# language-features

13
推荐指数
1
解决办法
5371
查看次数