
@interface ViewController ()<UITextViewDelegate>
- (void)viewDidLoad
{
[super viewDidLoad];
NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:@"www.google.com"];
NSDictionary *linkDic = @{ NSLinkAttributeName : [NSURL URLWithString:@"http://www.google.com"] };
[str setAttributes:linkDic range:[[str string] rangeOfString:@"www.google.com"]];
_textView.attributedText = str;
}
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange
{
NSLog(@"=============%@",URL);
return YES;
}
Run Code Online (Sandbox Code Playgroud)
有什么不对?
我当前的代码如下:
#include <iostream>
#include "SDL.h"
#include "SDL_image.h"
int main(int argc, char **argv) {
if (SDL_Init(SDL_INIT_EVERYTHING != 0)) {
std::cout << "SDL_Init() Error: " << SDL_GetError() << std::endl;
std::cin.get();
return 1;
}
SDL_Window *win = SDL_CreateWindow("RandomSDL2", 100, 100, 1280, 720, SDL_WINDOW_SHOWN);
if (win = nullptr) {
std::cout << "SDL_CreateWindow() Error: " << SDL_GetError() << std::endl;
std::cin.get();
return 1;
}
SDL_Renderer *ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
if (ren == nullptr) {
std::cout << "SDL_CreateRenderer() Error: " << SDL_GetError() << std::endl; …Run Code Online (Sandbox Code Playgroud) 有没有办法在if构造中声明,赋值和比较变量到表达式,使得它只在if构造的范围内定义?
这是有效的(声明和赋值,但当然条件只是函数f的返回值等于或等于零):
int main()
{
if(int i = f())
{
printf("%d", i);
// i is defined here!
}
else
{
// Here too!
}
// But not here!
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试将i的值与实际表达式进行比较时,我遇到了麻烦:
int main()
{
// Does not compile because "int i = f()" is not a primary expression?
if((int i = f()) == 3)
{
printf("%d", i);
}
}
Run Code Online (Sandbox Code Playgroud)
从行为的角度来看,如果构造类型可以创建整个范围,但在我看来它看起来很难看:
int main()
{
{
int i = f();
if(i == 3)
{
printf("%d", i);
// i is defined here!
}
// …Run Code Online (Sandbox Code Playgroud) 我有一个小的工作SDL2示例(C++教程的简单端口),我正在尝试使用( - >)r monad重构渲染代码.这是没有重构的样本的工作部分
renderClear renderer
renderCopy renderer texture nullPtr nullPtr
renderPresent renderer
Run Code Online (Sandbox Code Playgroud)
制作和运行 - 纹理就在那里.都
renderClear renderer
flip ($) renderer $ do
copy texture nullPtr nullPtr
renderPresent renderer
Run Code Online (Sandbox Code Playgroud)
和
renderClear renderer
renderCopy renderer texture nullPtr nullPtr
flip ($) renderer $ do
present
Run Code Online (Sandbox Code Playgroud)
工作也很好.然而
renderClear renderer
flip ($) renderer $ do
copy texture nullPtr nullPtr
present
Run Code Online (Sandbox Code Playgroud)
只是绘制黑色窗口就是这样.present是的别名renderPresent和copy是renderCopy与第一个参数转移到结束.这与使用IO的这些功能有关吗?我怎样才能解决这个问题?
打印十六进制值(%x)和地址(%p)时,格式略有不同.0x在十六进制值的情况下,打印值不会以:
int main()
{
int x = 0x1234;
printf("Value of x: %x\n", x);
printf("Address of x: %p\n", (void*)&x);
}
Run Code Online (Sandbox Code Playgroud)
收益率(gcc):
Value of x: 1234
Address of x: 0xffb0fbfc
Run Code Online (Sandbox Code Playgroud)
为什么0x在地址的情况下强迫你呢?
我想它归结为标准.
0x如果没有我想要的话,打印地址的正确方法是什么?这%p不仅是%x一个附加的0x权利吗?
我正在与旧的C风格界面作斗争.我有一个像这样的签名功能:
/// if return_value == NULL only the length is returned
void f( char * return_value, size_t * size_only_known_at_runtime);
Run Code Online (Sandbox Code Playgroud)
我的问题是,以下代码是否安全?
std::size required;
f( NULL, &required );
std::string s;
s.resize(required);
f( &s[0], &required );
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法将数据输入字符串?
我认为这听起来很简单,但我似乎无法弄清楚如何去做..我正在使用这个模拟功能模拟一个 linux 套接字接口:
MOCK_CONST_METHOD4(send, int(int socketDescriptor, const void* buffer, size_t n, int flags));
Run Code Online (Sandbox Code Playgroud)
我想返回用send.
一个想法是这样的:
uint32_t nBytes = 0;
EXPECT_CALL(socketMock, send(124, _, _, MSG_NOSIGNAL))
.WillOnce(DoAll(SaveArg<2>(&nBytes),
Return(nBytes)));
Run Code Online (Sandbox Code Playgroud)
但这将始终返回零。
我应该怎么做Return(Arg<2>)?
作为我之前的问题的后续(通过const&写入类成员),是否也很好地定义并正确抛弃类成员方法的常量?
class A
{
public:
A()
: a(5)
{
}
int run() const
{
std::cout << "a: " << a << std::endl;
int& x = (int&)a;
x = 17;
std::cout << "a: " << a << std::endl;
return 0;
}
private:
int a;
};
int main()
{
A program;
return program.run();
}
Run Code Online (Sandbox Code Playgroud)
输出(在cpp.sh上用c ++ 14测试-O0,-Wall,-Wextra和-Wpedantic):
a: 5
a: 17
Run Code Online (Sandbox Code Playgroud)
如果没有,我会参考哪个标准来解释?
我在协议缓冲区消息中定义了许多映射字段。这些消息用 C++ 填充,并在不同的 C++ 组件中接收,该组件使用Descriptor和ReflectionAPI 读取消息内容。
给定一个地图字段,说:
map <int32, int32> my_map = 1;
Run Code Online (Sandbox Code Playgroud)
它的传输方式与以下内容相同:
message my_map_entry {
int32 key = 1;
int32 value = 2;
}
repeated my_map_entry my_map = 1;
Run Code Online (Sandbox Code Playgroud)
Descriptor由于我已经了解和API的当前限制Reflection,因此这里我必须通过迭代接收到的数据来执行查找。当然,我可以将所有数据放入一些更合适的数据结构中,例如,std::unordered_map如果我想在接收到的地图字段中进行多次查找,但我通常只对每个接收到的地图字段进行一次查找。
我可以假设一些有关数据接收顺序的信息吗?由于协议缓冲区实现中使用的底层数据结构,重复的 my_map_entry 消息是否可能是有序的?如果是这样,则当找到更大的键时,可以停止在映射中查找整数键。当我在应用程序中处理接收到的地图字段时,这可以给我带来潜在的优化。
我有一个带有自动化对象的Delphi应用程序.在程序开始时,我想在注册表中自动注册COM对象(而不是使用/ regserver开关).
该程序的旧版本是用Delphi 7编写的,我想我记得这个版本在程序启动后注册了.但是现在它是用D2009编译的,现在它没有注册.也许有人对此有所了解?
非常感谢你!
c++ ×6
sdl ×2
sdl-2 ×2
c ×1
com ×1
const ×1
const-cast ×1
declaration ×1
delphi ×1
gmock ×1
haskell ×1
if-statement ×1
io ×1
ios ×1
monads ×1
printf ×1
scope ×1
uitextview ×1
unit-testing ×1